"""
将列表内的元素，根据位数合并成字典：
lst =[1,2.4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384, 32768,65536,4294967296]

# 输出
{
    1: ['1', '2', '8'],
    2: ['16', '32', '64'],
    3: ['128', '256', '512'],
    4: ['1024', '2048', '4096', '8192'],
    5: ['16384', '32768', '65536'],
    6: ['4294967296']
}

dict.setdefault(key, default=None)
参数
key -- 查找的键值。（key不存在的时候就创建，存在的时候就添加value【如果value里面是None就是原字典的值】）
default -- 键不存在时，设置的默认键值。
返回值

setdefault和get的区别
setdefault 如果不存在会在原字典里添加一个 key:default_value 并返回 default_value。
get 找不到 key 的时候不会修改原字典，只返回 default_value。
若要修改字典 dic.setdefault(key,default_value) 等同于 dic[key] = dic.get(key,default_value)。
"""

lst = [1, 2.4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 4294967296]
dict_num = {

}
for lis_i in lst:
    str_i = str(int(lis_i))
    if len(str_i) < 6:
        dict_num.setdefault(len(str_i), []).append(str_i)
    else:
        dict_num.setdefault(6, []).append(str_i)
print(dict_num)
